Autonomically adjusting one or more computer program configuration settings when resources in a logical partition change

ABSTRACT

A computer program communicates with a partition manager in the logical partition where the computer program is run. When resource allocation in the logical partition dynamically changes, the partition manager notifies the computer program of the configuration change. The computer program may automatically adjust one or more configuration settings that affect performance of the computer program to dynamically tune the computer program to optimal performance each time the allocation of resources within the logical partition changes. The partition manager may notify the computer program of an impending change in resource allocation in the logical partition that runs the computer program, which allows the computer program to reconfigure its configuration setting(s) before the partition manager changes the resource allocation in the logical partition.

CROSS-REFERENCE TO PARENT APPLICATION

This patent application is a continuation of “Apparatus and Method forAutomatically Adjusting One or More Computer Program ConfigurationSettings When Resources in a Logical Partition Change,” U.S. Ser. No.11/330,684 filed on Jan. 12, 2006, which is incorporated herein byreference.

BACKGROUND OF THE INVENTION

1. Technical Field

This invention generally relates to data processing, and morespecifically relates to performance enhancement in a logicallypartitioned computer system.

2. Background Art

Computer systems typically include a combination of hardware andsoftware. The combination of hardware and software on a particularcomputer system defines a computing environment. Different hardwareplatforms and different operating systems thus provide differentcomputing environments. In recent years, engineers have recognized thatit is possible to provide different computing environments on the samephysical computer system by logically partitioning the computer systemresources into different computing environments. The eServer iSeriescomputer system developed by IBM is an example of a computer system thatsupports logical partitioning. If logical partitioning on an eServeriSeries computer system is desired, partition manager code (referred toas a “hypervisor” in IBM terminology) is installed that allows definingdifferent computing environments on the same platform. Once thepartition manager is installed, logical partitions may be created thatdefine different computing environments. The partition manager managesthe logical partitions to assure that they can share needed resources inthe computer system while maintaining the separate computingenvironments defined by the logical partitions.

A computer system that includes multiple logical partitions typicallyshares resources between the logical partitions. For example, a computersystem with a single CPU could have two logical partitions defined, with50% of the CPU allocated to each logical partition, with 33% of thememory allocated to the first logical partition and 67% of the memoryallocated to the second logical partition, and with two different I/Oslots allocated to the two logical partitions, one per partition. Oncelogical partitions are defined and shared resources are allocated to thelogical partitions, each logical partition acts as a separate computersystem. Thus, in the example above that has a single computer systemwith two logical partitions, the two logical partitions will appear forall practical purposes to be two separate and distinct computer systems.

More recently, dynamic allocation of resources among logical partitionshas been made possible. Some IBM computer systems support dynamiclogical partitioning (DLPAR), which allows resources (such as CPUs andmemory) to be dynamically allocated to or from logical partitions whilethe logical partitions are running. This ability to dynamically allocateresources can affect performance of computer software running within thelogical partitions. For example, an application server running in alogical partition may have a thread pool size and heap size that isselected to provide the best performance assuming a given allocation ofresources. If the allocation of resources dynamically changes, theapplication server will be unaware of the change, and the thread poolsize and heap size that was originally selected for the application mayprovide less-than-optimal performance with a new allocation of resourcesin the logical partition that runs the application server. The result isan application server that does not run as efficiently as it could dueto changing resources in the logical partition that runs the applicationserver. Without a way to make computer software aware of changes inresource allocation in a logical partition, thereby allowing thecomputer software to automatically change one or more configurationsettings that determine the performance of the computer software, thecomputer industry will continue to suffer from static computer softwarethat is oblivious to changes in resource allocation in a logicalpartition that runs the computer software.

DISCLOSURE OF INVENTION

A computer program communicates with a partition manager in the logicalpartition where the computer program is run. When resource allocation inthe logical partition dynamically changes, the partition managernotifies the computer program of the configuration change. The computerprogram may then automatically adjust one or more configuration settingsthat affect performance of the computer program to dynamically tune thecomputer program to optimal performance each time the allocation ofresources within the computer program's logical partition changes. Inone embodiment, the partition manager notifies the computer program ofan impending change in resource allocation in the logical partition thatruns the computer program. The computer program may delay the impendingchange to give the computer program a chance to reconfigure itsconfiguration setting(s) before the partition manager changes theresource allocation in the logical partition. The computer program maythen signal the partition manager to proceed with the change. If thecomputer program does not respond within a prescribed time period, thepartition manager will make the change even if the computer program doesnot respond.

The foregoing and other features and advantages of the invention will beapparent from the following more particular description of preferredembodiments of the invention, as illustrated in the accompanyingdrawings.

BRIEF DESCRIPTION OF DRAWINGS

The preferred embodiments of the present invention will hereinafter bedescribed in conjunction with the appended drawings, where likedesignations denote like elements, and:

FIG. 1 is a block diagram of a computer apparatus in accordance with thepreferred embodiments;

FIG. 2 is a block diagram of a prior art computer system before logicalpartitioning;

FIG. 3 is a block diagram of the prior art computer system in FIG. 2after logical partitioning;

FIG. 4 is a block diagram of the prior art computer system in FIG. 3after installing an operating system and other software in each logicalpartition;

FIG. 5 is a block diagram of a prior art application server withconfiguration settings that affect performance of the applicationserver;

FIG. 6 is a block diagram showing dynamic reallocation of memory in alogical partition as known in the prior art;

FIG. 7 is a block diagram showing how the DLPAR agent managementmechanism notifies a computer program of a resource configuration changeevent in accordance with the preferred embodiments;

FIG. 8 is a flow diagram of a method in accordance with the preferredembodiments;

FIG. 9 is a flow diagram of a method in accordance with the preferredembodiments for a computer program to automatically change one or moreconfiguration settings as a result of a configuration change in thelogical partition in which the computer program is run;

FIG. 10 is a flow diagram of a method in accordance with the preferredembodiments for determining whether a computer program changes itsconfiguration setting(s) when an increase in resources in a logicalpartition is detected;

FIG. 11 is a sample table of statistics gathered by the DLPAR agent of acomputer program in accordance with the preferred embodiments; and

FIG. 12 is a table showing sample configuration adjustment criteria inaccordance with the preferred embodiments.

BEST MODE FOR CARRYING OUT THE INVENTION 1.0 Overview

The present invention relates to the performance oflogically-partitioned computer systems. For those not familiar with theconcepts of logical partitions, this Overview section will providebackground information that will help to understand the presentinvention.

Known Logical Partition Systems and Tools

As stated in the Background Art section above, a computer system may belogically partitioned to create multiple virtual machines on a singlecomputer platform. Referring to FIG. 2, a sample computer system 200 isshown to include four processors 210, 16 GB of main memory 220, and sixI/O slots 230. Note that there may be many other components inside aprior art computer system that are not shown in FIG. 2 for the purposeof simplifying the discussion herein. We now assume that the computersystem 200 is configured with three logical partitions, as shown in FIG.3. The first logical partition 310A is defined to have one processor210A, 2 GB of memory 220A, and one I/O slot 230A. The second logicalpartition 310B is defined to have one processor 210B, 4 GB of memory220B, and 2 I/O slots 230B. The third logical partition 310C is definedto have two processors 210C, 10 GB of memory 220C, and three to slots230C. Note that the total number of processors 210A+210B+210C equals thefour processors 210 in the computer system. Likewise for the memory andI/O slots.

Now that hardware resources have been allocated to the logicalpartitions, software may be installed, as shown in FIG. 4. First, anoperating system is typically installed in each partition, followed byutilities or applications as the specific performance needs of eachpartition require. Thus, for the example in FIG. 4, the first logicalpartition 310A includes an operating system 410A, a utility 420A, and anapplication 430A. The second logical partition 310B includes anoperating system 410B, and two applications 420B and 430B. The thirdlogical partition 310C includes an operating system 410C, a utility420C, and an application 430C. Once the software is installed in thelogical partitions as shown in FIG. 4, the logically-partitionedcomputer system is ready for use.

Let's now assume computer system 200 in FIG. 4 includes a dynamicpartition manager that may dynamically change allocation of resources toor from any of the logical partitions as the logical partitions run. Inprior art computer system 200 in FIG. 4, the utilities and applicationsrunning within a logical partition do not know they are executing in alogical partition. These utilities and applications may includeconfiguration settings that affect their performance. Note, however,that the values of these configuration settings are typically setaccording to an assumed allocation of resources. For example, theapplication server 510 in FIG. 5 could be an example of an application(e.g., 430C in FIG. 4) executing in a logical partition (e.g., logicalpartition 310C in FIG. 4). As shown in FIG. 5, an application server 510may have configuration settings that include a threadpool size 520, aheap size 530, sizes of one or more buffers 540, and cache size 550. Inthe prior art, the configuration settings are set by a systemadministrator according to available resources. In the prior artcomputer system in FIG. 4, let's assume the application server 510 isapplication 430C in logical partition 310C. If a system administratorsets the thread pool size, heap size, buffer sizes, and cache size forthe application server according to a present allocation of resources inlogical partition 310C. as shown in FIG. 4, these values may not besuitable for best performance if the allocation dynamically changes. Forexample, if the memory allocated to the logical partition 310C isreduced from 10 GB to 6 GB, as shown in FIG. 6, the size of the heap inthe application server may cause excessive paging, thereby significantlyreducing performance of the application server. Because prior artcomputer programs are not aware of resource allocation changes in alogical partition, the performance of the computer software cannot beimproved with dynamic changes to resources in the logical partition inwhich the computer program is executed. The preferred embodimentsdiscussed in detail below solve this problem by making a computerprogram aware of changes to resource allocation in a logical partition,which allows the computer program to automatically change one or moreconfiguration settings to improve the performance of the computerprogram in light of the new resource allocation.

2.0 DETAILED DESCRIPTION

The preferred embodiments provide a management mechanism within adynamic partition manager that communicates changes in resourceallocation in the logical partition to one or more computer programsrunning in the logical partition. A computer program includes an agentthat communicates with the dynamic partition manager. When theallocation of resources in a logical partition needs to change, or hasalready been changed, a message is sent to the computer program tonotify the computer program of the change in resource allocation in thelogical partition. As a result, the computer program may make changes toone or more configuration settings that affect the performance of thecomputer program. In this way, a computer program may automatically tuneits performance according to changing allocation of resources in thelogical partition in which the computer program is run. The computerprogram may also collect statistics and compare the collected statisticsto specified criteria to determine whether an increase in resources inthe logical partition should cause the computer program to automaticallyadjust its configuration setting(s). In one particular embodiment, thedynamic partition manager notifies the computer program of a change inresource allocation before the change is made, thereby allowing thecomputer program to change its configuration setting(s) and signal tothe dynamic partition manager to proceed with the changes. If thecomputer program does not respond within a specified time period, thedynamic partition manager makes the change anyway. In this manner,computer programs become aware of changes to the allocation of resourcesin the logical partition in which they run, and automatically adjustthemselves for optimal performance in an environment where allocation ofresources in a logical partition may dynamically change.

Referring to FIG. 1, a computer system 100 is one suitableimplementation of an apparatus in accordance with the preferredembodiments of the invention. Computer system 100 is an IBM eServeriSeries computer system. However, those skilled in the art willappreciate that the mechanisms and apparatus of the present inventionapply equally to any computer system, regardless of whether the computersystem is a complicated multi-user computing apparatus, a single userworkstation, or an embedded control system. As shown in FIG. 1, computersystem 100 comprises a processor 110, a main memory 120, a mass storageinterface 130, a display interface 140, and a network interface 150.These system components are interconnected through the use of a systembus 160. Mass storage interface 130 is used to connect mass storagedevices, such as a direct access storage device 155, to computer system100. One specific type of direct access storage device 155 is a readableand writable CD-RW drive, which may store data to and read data from aCD-RW 195.

Main memory 120 in accordance with the preferred embodiments containsdata 121, a dynamic partition manager 122, an operating system 124, anda computer program 125. Data 121 represents any data that serves asinput to or output from any program in computer system 100. The dynamicpartition manager 122 is system software that controls creation andmanagement of multiple logical partitions that are defined on theapparatus 100. The dynamic partition manager 122 also supports dynamicallocation of resources to logical partitions as the logical partitionsare running. In addition, the dynamic partition manager 122 includes aDLPAR agent management mechanism 123 that communicates with DLPAR agentsin computer programs running it a logical partition. The DLPAR agentmanagement mechanism 123 allows the dynamic partition manager 122 tonotify the computer program 125 when a resource allocation change needsto be made or has already been made.

Operating system 124 is a multitasking operating system known in theindustry as i5/OS; however, those skilled in the art will appreciatethat the spirit and scope of the present invention is not limited to anyone operating system. Once the dynamic partition manager 122 defines alogical partition, the operating system 124 and computer program 125 maybe installed in the logical partition. The operating system 124 runsunder control of the dynamic partition manager 122.

The computer program 125 includes a DLPAR agent 126 that communicateswith the DLPAR agent management mechanism 123 in the dynamic partitionmanager 122. The DLPAR agent 126 includes a statistics mechanism 127that tracks resource usage in the logical partition in which thecomputer program 125 runs. This allows the DLPAR agent 126 tointelligently determine whether an increase of resources in the logicalpartition is likely due to performance limitations in the computerprogram 125. The DLPAR agent 126 compares collected statistics for thecomputer program and for its logical partition to specified criteria todetermine whether an increase in resources should cause the computerprogram 125 to automatically adjust one of more of its configurationsettings 128. The term “configuration setting” is used herein in a broadsense to denote any setting or parameter that may be specified by asystem administrator or user or that a computer program may specifyautomatically at startup that affects performance of the computerprogram 125. For example, if the computer program 125 were anapplication server 510 as shown in FIG. 5, the configuration settingscould include threadpool size 520, heap size 530, the size of one ormore buffers 540, and cache size 550.

Computer system 100 utilizes well known virtual addressing mechanismsthat allow the programs of computer system 100 to behave as if they onlyhave access to a large, single storage entity instead of access tomultiple, smaller storage entities such as main memory 120 and DASDdevice 155. Therefore, while data 121, dynamic partition manager 122,operating system 124, and computer program 125 are shown to reside inmain memory 120, those skilled in the art will recognize that theseitems are not necessarily all completely contained in main memory 120 atthe same time. It should also be noted that the term “memory” is usedherein to generically refer to the entire virtual memory of computersystem 100, and may include the virtual memory of other computer systemscoupled to computer system 100.

Processor 110 may be constructed from one or more microprocessors and/orintegrated circuits. Processor 110 executes program instructions storedin main memory 120. Main memory 120 stores programs and data thatprocessor 110 may access. When computer system 100 starts up, processor110 initially executes the program instructions that make up dynamicpartition manager 122. Dynamic partition manager 122 is a sophisticatedprogram that manages the resources of computer system 100 amongdifferent logical partitions. Some of these resources are processor 110,main memory 120, mass storage interface 130, display interface 140,network interface 150, and system bus 160. Once a logical partition isdefined using the dynamic partition manager 122, the operating system124 may be installed and run within the logical partition.

Although computer system 100 is shown to contain only a single processorand a single system bus, those skilled in the art will appreciate thatthe present invention may be practiced using a computer system that hasmultiple processors and/or multiple buses. In addition, the interfacesthat are used in the preferred embodiment each include separate, fullyprogrammed microprocessors that are used to off-load compute-intensiveprocessing from processor 110. However, those skilled in the art willappreciate that the present invention applies equally to computersystems that simply use I/O adapters to perform similar functions.

Display interface 140 is used to directly connect one or more displays165 to computer system 100. These displays 165, which may benon-intelligent (i.e., dumb) terminals or fully programmableworkstations, are used to allow system administrators and users tocommunicate with computer system 100. Note, however, that while displayinterface 140 is provided to support communication with one or moredisplays 165, computer system 100 does not necessarily require a display165, because all needed interaction with users and other processes mayoccur via network interface 150.

Network interface 150 is used to connect other computer systems and/orworkstations (e.g., 175 in FIG. 1) to computer system 100 across anetwork 170. The present invention applies equally no matter howcomputer system 100 may be connected to other computer systems and/orworkstations, regardless of whether the network connection 170 is madeusing present-day analog and/or digital techniques or via somenetworking mechanism of the future. In addition, many different networkprotocols can be used to implement a network. These protocols arespecialized computer programs that allow computers to communicate acrossnetwork 170. TCP/IP (Transmission Control Protocol/Internet Protocol) isan example of a suitable network protocol.

At this point, it is important to note that while the present inventionhas been and will continue to be described in the context of a fullyfunctional computer system, those skilled in the art will appreciatethat the present invention is capable of being distributed as a programproduct in a variety of forms, and that the present invention appliesequally regardless of the particular type of computer-readable signalbearing media used to actually carry out the distribution. Examples ofsuitable computer-readable signal bearing media include: recordable typemedia such as floppy disks and CD-RW (e.g., 195 of FIG. 1), andtransmission type media such as digital and analog communications links.Note that the preferred signal bearing media is tangible.

Referring to FIG. 7, the preferred embodiments make a computer programaware of changes in resource allocation in a logical partition byproviding a DLPAR agent management mechanism 124 in a dynamic partitionmanager that communicates a resource configuration change event 710 to aDLPAR agent 126 in a computer program. Note that DLPAR agent 126 mayoptionally communicate with the DLPAR agent management mechanism 124 aswell, as shown by the dotted line in FIG. 7. Because the DLPAR agentmanagement mechanism 124 now informs the DLPAR agent 126 in a computerprogram when a resource allocation changes in the logical partitionwhere the DLPAR agent 126 is running, the computer program that includesthe DLPAR agent 126 can now take action to automatically adjust one ormore of its configuration settings to improve performance in light ofthe changed resource allocation.

Referring to FIG. 8, a method 800 in accordance with the preferredembodiments begins when the DLPAR agent receives a resourceconfiguration change event from the DLPAR agent management mechanism inthe dynamic partition manager (step 810). For convenience in the figuresand in the discussion below, the term “resource configuration changeevent” in FIG. 7 has been shortened in FIG. 8 to “configuration changeevent”, and the term “config. change” in FIG. 8 corresponds to thechanges communicated in the configuration change event.

Once the DLPAR agent receives the configuration change event, the DLPARagent determines whether its computer program needs adjustment due tothe configuration change (step 820). If not (step 820=NO), method 800 isdone. If so (step 820=YES), method 800 determines whether a delay in theconfiguration change would be helpful (step 830). A delay in theconfiguration change might be helpful, for example, in the case ofdecreasing resources to allow the computer program to adjust to thedecreased resources before the resources are actually decreased. Thisprevents poor performance of the computer program that might result fromadjusting one or more configuration settings after resources havealready been decreased. If a delay in the configuration change is nothelpful (step 830), the computer program adjusts one or moreconfiguration settings in view of the impending configuration changecommunicated in the configuration change event (step 840), and method800 is done.

If a delay in the configuration change would be helpful (step 830=YES),the DLPAR agent uses a callback to the DLPAR agent management mechanismto delay the configuration change (step 850). The callback essentiallyasks the dynamic partition manager to delay the change. In response, theDLPAR agent management mechanism sets a timer (step 860), then awaits acallback from the DLPAR agent in the computer program authorizing theconfiguration change (step 870). In the meantime, the computer programadjusts one or more of its configuration settings in view of theimpending configuration change (step 852). Once the adjustment is made,the DLPAR agent in the computer program sends a callback to the DLPARagent management mechanism authorizing the configuration change toproceed (step 854). Note that steps 852 and 854 are shown with dottedlines to indicate that these steps are being performed by the computerprogram in parallel to the DLPAR agent management mechanism in thedynamic partition manager performing steps 860 and 870.

Step 880 waits until either the callback message is received authorizingthe change to proceed, or the timer fires (step 880=YES). Once eitherthe callback message is received or the timer fires, the DLPAR agentmanagement mechanism makes the configuration change (step 890). Thetimer allows the change to proceed even if the computer program does notrespond to assure the computer program cannot veto a change that thedynamic partition manager needs to perform.

A specific example is now presented to illustrate the concepts of thepreferred embodiments. We assume the computer program 125 in FIG. 1 issimilar to the application server 510 in FIG. 5, which includes athreadpool size 520, a heap size 530, size of one or more buffers 540,and cache size 550. Each of 520, 530, 540 and 550 are configurationsettings that affect the performance of the application server 510. Notethat an application server of the preferred embodiments not onlyincludes the configuration settings 128 shown in FIG. 5 as 520, 530, 540and 550, but also includes the DLPAR agent 126 in FIG. 1. Referring toFIG. 9, a method 900 includes steps performed by an application serverin accordance with the preferred embodiments to automatically change oneor more of its configuration settings in response to a configurationchange event received from the dynamic partition manager. First, method900 determines whether the configuration change affects the number ofCPUs in the logical partition in which the application server is running(step 910). If so (step 910=YES), method 900 determines whether thenumber of CPUs increases or decreases (step 920). If the number of CPUsincreases (step 920=YES), the threadpool size is increased (step 922)and the heap size is increased (step 924). If the number of CPUsdecreases (step 920=NO), the threadpool size is decreased (step 930),number of threads used for garbage collection are decreased (step 932),and the size of one or more buffers is increased (step 934) to providemore buffer space in light of reduced CPU capacity.

After making appropriate changes to one or more configuration settingsthat result from a change in the number of CPUs, or if the configurationchange does not affect the number of CPUs (step 910=NO), method 900determines whether the configuration change affects the size of memory(step 940). If not (step 940=NO), method 900 is done. If theconfiguration change affects the size of memory allocated to the logicalpartition in which the application server is running (step 940=YES),method 900 then determines whether the configuration change increases ordecreases the memory (step 950). If the configuration change increasesthe memory (step 950=YES), the heap size is increased (step 960) and thecache size is increased (step 962). If the configuration changedecreases the memory (step 950=NO), the heap size is decreased (step970) and the cache size is decreased (step 972). This simple exampleillustrated by method 900 in FIG. 9 shows how a computer program mayautomatically adjust one or more configuration settings that affect itsperformance when the computer program receives notification from thedynamic partition manager of a change in resources in the logicalpartition in which the computer program is running.

Method 900 in FIG. 9 assumes an application server that only cares aboutchanges to the number of processors or memory. However, the preferredembodiments expressly extend to any suitable change of resources in alogical partition. The resource configuration change event 710 in FIG. 7preferably specifies the configuration change in the logical partition,and the DLPAR agent 126 may then determine whether it cares about theconfiguration change. If not, it does nothing. If so, the DLPAR agent126 causes the computer program to automatically change one or more ofits configuration settings to tune the performance of the computerprogram according to the changed configuration of the logical partitionin which the computer program is running. A more sophisticated variationwould allow each DLPAR agent 126 to register with the DLPAR agentmanagement mechanism 124 for the changes in which the computer programis interested. When a configuration change is needed, the DLPAR agentmanagement mechanism 124 would then signal only those DLPAR agents thatregistered to receive notification of this specific type ofconfiguration change.

Note that methods 800 and 900 in FIGS. 8 and 9, respectively, assumethat any added resource is added for the benefit of a single computerprogram. In reality, a logical partition may be executing many differentcomputer programs. If each computer program were to assume an additionof resources were for its own benefit and automatically change one ormore configuration settings to use the additional resources, multiplecomputer programs could now have configuration settings that are notoptimized for the shared environment. To avoid this situation, thepreferred embodiments have optional features that allow a computerprogram to collect performance statistics and decide based on thecollected statistics and based on specified criteria whether or not toautomatically adjust one or more of its configuration settings. Method1000 in FIG. 10 starts by collecting performance statistics for thelogical partition that is running the computer program (and hence, theDLPAR agent) (step 1010). The statistics are preferably collected by thestatistics mechanism 127 in the DLPAR agent 126 shown in FIG. 1. If aconfiguration change does not add resources (step 1020=NO), method 1000is done. If a configuration change adds resources (step 1020=YES), thecomputer program determines from the performance statistics whether toadjust one or more configuration settings due to the added resources(step 1030). If no adjustment is needed (step 1040=NO), method 1000 isdone. If adjustment is needed (step 1040=YES), one or more configurationsettings are automatically adjusted (step 1050). The autonomicadjustment of resources in step 1050 is preferably similar to the stepsshown in method 800 in FIG. 8 and method 900 in FIG. 9 when resourcesare added.

A simple example is now provided to illustrate how method 1000 in FIG.10 functions. We assume the statistics mechanism 127 in FIG. 1 collectsthe statistics shown in the table 1100 in FIG. 11. These collectedstatistics include garbage collection (GC) duration and frequency, thepercentage of the CPU power available in the logical partition that isused by this computer program, the percentage of memory available in thelogical partition that is used by this computer program, the queuelength and service times for internal thread pools, and otherperformance metrics. We next assume a system administrator has set oneor more configuration adjustment criteria as shown in table 1200 in FIG.12. Note that the system administrator may specify a threshold for eachcollected statistic. In table 1200, the CPU threshold is set to 75% andthe memory threshold is set to 75%. The collected statistics in table1100 are compared with the thresholds in table 1200 in FIG. 12. Becausethe percentage of CPU used (78%) is greater than the CPU threshold of75%, the computer program may assume an added CPU is being added toenhance its performance, and may therefore automatically adjust one ormore of its configuration settings to take advantage of the added CPUcapacity. Because the percentage of memory used (85%) is greater thanthe memory threshold of 75%, the computer program may assume memory isbeing added to enhance its performance, and may therefore automaticallyadjust one or more of its configuration settings to take advantage ofthe added memory capacity. In similar fashion, if the performancestatistics were below the thresholds, the computer program would assumethat added resources were not added to improve its performance, andwould therefore not make any autonomic adjustments as a result of theaddition of new resources in the logical partition that runs thecomputer program. Note that some of the entries in the tables 1100 and1200 in FIGS. 11 and 12, respectively, are shown as “ . . . ” indicatingthese may contain data that is not needed for the simple example above.By collecting statistics and comparing the collected statistics to aspecified configuration adjustment criteria, the preferred embodimentsallow a computer program to make a more intelligent decision regardingwhether added resources are being added for its benefit or for thebenefit of another program, whether currently running or that will beinstalled in the future.

Table 1200 in FIG. 12 shows simple thresholds for the purpose ofillustrating the concepts of the preferred embodiments. Note, however,that the preferred embodiments expressly extend to any suitable criteriafor determining whether a computer program should make autonomicadjustments to one or more of its configuration settings as a result ofthe computer program receiving a message indicating a dynamic change inresource allocation in the logical partition that runs the computerprogram. Suitable criteria include, without limitation, any suitablethreshold, formula, or heuristic.

The preferred embodiments enhance the performance of a computer programin a dynamic logical partition by determining when a partition managerneeds to change allocation of resources to the logical partition andinforming the computer program of the change, thereby allowing thecomputer program to automatically adjust one or more of itsconfiguration settings to optimize performance of the computer programin the changed environment. The preferred embodiments thus make computerprograms aware of changes in a dynamic logical partition and provide theintelligence to make autonomic adjustments in the computer program tooptimize performance of the computer program.

One skilled in the art will appreciate that many variations are possiblewithin the scope of the present invention. Thus, while the invention hasbeen particularly shown and described with reference to preferredembodiments thereof, it will be understood by those skilled in the artthat these and other changes in form and details may be made thereinwithout departing from the spirit and scope of the invention.

1. A method for making a computer program aware of a dynamic change in alogical partition while the logical partition is running, the methodcomprising the steps of: a dynamic partition manager determining that adynamic reallocation of hardware resources in the logical partition isneeded; and the dynamic partition manager sending a message to thecomputer program regarding the dynamic reallocation of hardwareresources in the logical partition.
 2. The method of claim 1 furthercomprising the step of the computer program, in response to receivingthe message from the dynamic partition manager, automatically changingat least one configuration setting in the computer program thatpotentially affects performance of the computer program.
 3. A method fordynamically changing performance of a computer program running in onelogical partition in a computer system that includes a plurality oflogical partitions, the method comprising the steps of: a dynamicpartition manager determining that a dynamic reallocation of hardwareresources in the one logical partition is needed while the one logicalpartition is running; the dynamic partition manager sending a message tothe computer program regarding the dynamic reallocation of hardwareresources in the one logical partition; and in response to receiving themessage from the dynamic partition manager, the computer programautomatically changing at least one configuration setting in thecomputer program that potentially affects performance of the computerprogram.
 4. The method of claim 3 wherein the computer program receivesthe message from the dynamic partition manager before the dynamicpartition manager makes the dynamic change to the allocation of hardwareresources in the one logical partition, and responds with a message tothe dynamic partition manager after the computer program automaticallychanges the at least one configuration setting in the computer program.5. The method of claim 3 further comprising the steps of: the computerprogram collecting performance statistics for the one logical partition;and comparing the performance statistics to at least one specifiedcriterion to determine whether or not the computer program willautomatically change the at least one configuration setting.
 6. Themethod of claim 3 wherein the computer program is an application serverthat includes a configuration setting for threadpool size, aconfiguration setting for heap size, a configuration setting for size ofat least one buffer, and a configuration setting for cache size.
 7. Themethod of claim 6 wherein the application server increases threadpoolsize and increases heap size when the dynamic change to the allocationof hardware resources increases a number of processors in the onelogical partition and increases heap size and increases cache size whenthe dynamic change to the allocation of hardware resources increasesmemory size in the one logical partition.
 8. The method of claim 6wherein the application server decreases threadpool size and increasessize of the at least one buffer when the dynamic change to theallocation of hardware resources decreases a number of processors in theone logical partition and decreases heap size and decreases cache sizewhen the dynamic change to the allocation of hardware resourcesdecreases memory size in the one logical partition.
 9. A method formaking an application server aware of a dynamic change in a logicalpartition while the logical partition is running, wherein theapplication server includes a configuration setting for threadpool size,a configuration setting for heap size, a configuration setting for sizeof at least one buffer, and a configuration setting for cache size, themethod comprising the steps of: a dynamic partition manager determiningthat a dynamic reallocation of hardware resources in the logicalpartition is needed; the dynamic partition manager sending a message tothe application server regarding the dynamic reallocation of hardwareresources in the logical partition before the dynamic partition managermakes the dynamic change to the allocation of hardware resources in theone logical partition; in response to receiving the message from thedynamic partition manager, the application server automatically changingat least one configuration setting in the application server thatpotentially affects performance of a computer system executing theapplication server, then responding with a message to the dynamicpartition manager; if the dynamic change to the allocation of hardwareresources increases a number of processors in the one logical partition,performing the steps of: increasing the threadpool size; and increasingthe heap size; if the dynamic change to the allocation of hardwareresources increases memory size in the one logical partition, performingthe steps of: increasing the heap size; and increasing the cache size;if the dynamic change to the allocation of hardware resources decreasesthe number of processors in the one logical partition, performing thesteps of: decreasing the threadpool size; and decreasing the heap size;if the dynamic change to the allocation of hardware resources decreasesthe memory size in the one logical partition, performing the steps of:decreasing the heap size; and decreasing the cache size.